Confusingly, the `brightness` property of
`ClutterBrightnessContrastEffect` has type `CoglColor`, but the
`set_brightness()` setter takes a single `float`.
We previously chose to use the property setter everywhere for
consistency (see
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3655#note_2369353),
but didn’t realise the types don’t match.
GJS optimises `this._brightnessEffect.brightness = foo` into a call to
`clutter_brightness_contrast_effect_set_brightness()`, which means the
type mismatch between the two results in a warning (see
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8280).
So, let’s change from a property setter into an explicit method call to
avoid the type ambiguity, at the expense of a bit of clarity from using
the same method to set the initial value and each property animation
step.
Signed-off-by: Philip Withnall <pwithnall@gnome.org>
Helps: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8280
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3687>
_brightnessEffectOn() {
// the effect value is in the range [0, 255] with 127 as the ‘no change’ mid-point
const startVal = 127;
- const startColor = new Cogl.Color({
- red: startVal,
- green: startVal,
- blue: startVal,
- alpha: 255,
- });
-
const finishVal = 127 * BRIGHTNESS_FACTOR;
const finishColor = new Cogl.Color({
red: finishVal,
alpha: 255,
});
- this._brightnessEffect.brightness = startColor;
+ this._brightnessEffect.set_brightness(startVal);
this._brightnessEffect.set_enabled(true);
Main.layoutManager.uiGroup.ease_property(